Tableau Server向け監視ツール「Tabmon」を使ってみた #tableau
はじめに
※本エントリはTableau Server v2018.3を前提としています。
こんにちは。DI部@大阪オフィスのtamaです。
今回はTabmonというツールをご紹介します。
Tabmonとは
Tableau社が開発したオープンソースのツールで、Tableau Serverのパフォーマンスを監視・分析することができます。また、そのデータを収集・可視化した情報を、Tableauワークブックの形で閲覧することもできます。
Tabmonをインストールするための条件など
インストール要件
下記の環境にインストールすることができます。基本的にはTableau ServerがインストールされているWindows Serverに入れる形になります。
- Windows OS
- Tableau Server v9以上
- Windows Management Framework 3.0
- Microsoft .NET Framework 4.5以降
- Tabmonインストール時にインストールされます。
- VS 2013用のVisual C ++再頒布可能パッケージ
- Tabmonインストール時にインストールされます。
インストールする前にTableau Serverでやっておくこと
Tableau Server JMXポートを解放しておく
下記のTSMコマンドを実行しておきます(バージョン2018.2以降)
tsm configuration set -k service.jmx_enabled -v true tsm pending-changes apply
(任意)Tableau Serverリポジトリ設定を有効化する(readonlyユーザーを用意する)
Tabmonのサンプルワークブックを使用する場合のみ必要となります。下記TSMコマンドを実行しておきます。
tsm data-access repository-access enable --repository-username readonly --repository-password <パスワード>
やってることは、下記エントリに書かれていることと同じです。
- Tableau Serverの管理ビューを使用してみる #tableau | DevelopersIO
- 「Tableau Server リポジトリへのアクセスを有効にする
Tabmonをインストールしてみる
インストーラーをGETする
下記よりダウンロードします(今回は1.3をインストールします)。
インストーラー実行
GETしたインストーラーを実行します。すると、OptionとInstallという2つのボタンが表示されますが、まずはOptionsを選択しましょう。
こちらの画面で、Tabmonのインストール先と、同時にインストールするPostgresのインストール先を設定します。また、Postgresのパスワード等も設定できます。今回はオール初期設定でいきます。OKを押しましょう。
先程の画面に戻るので、Installを選択すると、あれよあれよと言う間にインストールが完了します。
Tabmonを実行する前の事前設定
Tabmon.configの設定を行う
実行する前にTabmon.config
というファイルの内容を編集する必要があります(ここを正しくしておかないと、監視結果のワークブックに何も表示されない)。
Tabmon.config
は、\Program Files (x86)\TabMon\Config\TabMon.config
にあります。
インストール直後の内容は下記のようになっています。
<?xml version="1.0"?> <!-- TabMon user settings: set these as required --> <TabMonConfig xmlns="TabMon"> <!-- Output mode. "DB" for database, "CSV" for flat-file export --> <OutputMode value="db"/> <!-- Polling rate, in seconds --> <PollInterval value="60"/> <!-- Target cluster & host configuration --> <Clusters> <Cluster name="Primary"> <Host computerName="YOURCOMPUTERNAME" address="localhost" specifyPorts="false"/> </Cluster> </Clusters> <!-- Results output database Configuration--> <Database name="TabMon" type="Postgres"> <Server host="localhost" port="5432"/> <User login="tabmon" password="xxxxxxxx"/> <Table name="countersamples"/> <!-- Generate indexes on service startup. --> <Indexes generate="true"> <Index column="timestamp" clustered="true"/> <Index column="machine" clustered="false"/> <Index column="instance" clustered="false"/> </Indexes> <!-- Automatically drop data rows older than the specified number of days. Set enabled="true" to turn this on. --> <PurgeOldData enabled="false" thresholdDays="30"/> </Database> </TabMonConfig>
Tabmonを活用するためには、Tableau ServerのJMXプロセスであるvizqlserver、vizportal、dataserver、backgrounderのJMXポートを調べて、このコンフィグファイルに記載する必要があります。Tableau Serverの各プロセスのポートを確認するには tsm topology list-ports
コマンドを使用します。…しかし、このコマンドでそれぞれのポートを調べてコンフィグファイルに書くのは結構面倒です。そんな人のために、ポートを調べてくれる上にxml部分まで自動で生成してくれるツールがあるので、それを使用します。
上記よりTabMonConfigBuilder.exe
をダウンロードし、解凍します。
コマンドプロンプトを開き、上記で解凍したフォルダに移動します。そして下記コマンドを順に実行します。
tsm login -u [TSMで使用するユーザー名]
tsm topology list-ports > [ポート情報を出力するテキストファイル名]
tabmonconfigbuilder [上記で作成したファイル名] [部分を出力するファイル名]
>cd C:\Users\Administrator\Downloads\TabMonConfigBuilder >tsm login -u Administrator >tsm topology list-ports > ports.txt >tabmonconfigbuilder ports.txt tabmon_config_port.txt Parsing topology file for process entries.. Building config section.. Writing config section and instructions to tabmon_config_port.txt.. Done writing config section.. Exiting..
最終的に出力されたファイルの中を確認すると、下記のxmlが記述されています。
<Host computerName="node1" address="node1" specifyPorts="true"> <ProcessType processName="dataserver"> <Process portNumber="xxxx" processNumber="x"/> <Process portNumber="xxxx" processNumber="x"/> </ProcessType> <ProcessType processName="vizql"> <Process portNumber="xxxx" processNumber="x"/> <Process portNumber="xxxx" processNumber="x"/> </ProcessType> <ProcessType processName="background job monitor"> <Process portNumber="xxxx" processNumber="x"/> <Process portNumber="xxxx" processNumber="x"/> </ProcessType> <ProcessType processName="vizportal"> <Process portNumber="xxxx" processNumber="x"/> </ProcessType> </Host>
このxmlのcomputerName
とaddress
を正しい値に書き換えて、Tabmon.config
にペーストしましょう。
<?xml version="1.0"?> <!-- TabMon user settings: set these as required --> <TabMonConfig xmlns="TabMon"> <!-- Output mode. "DB" for database, "CSV" for flat-file export --> <OutputMode value="db"/> <!-- Polling rate, in seconds --> <PollInterval value="60"/> <!-- Target cluster & host configuration --> <Clusters> <Cluster name="Primary"> <Host computerName="ec2amaz-xxxxxx" address="localhost" specifyPorts="true"> <ProcessType processName="dataserver"> <Process portNumber="xxxx" processNumber="x"/> <Process portNumber="xxxx" processNumber="x"/> </ProcessType> <ProcessType processName="vizql"> <Process portNumber="xxxx" processNumber="x"/> <Process portNumber="xxxx" processNumber="x"/> </ProcessType> <ProcessType processName="background job monitor"> <Process portNumber="xxxx" processNumber="x"/> <Process portNumber="xxxx" processNumber="x"/> </ProcessType> <ProcessType processName="vizportal"> <Process portNumber="xxxx" processNumber="x"/> </ProcessType> </Host> </Cluster> </Clusters> <!-- Results output database Configuration--> <Database name="TabMon" type="Postgres"> <Server host="localhost" port="5432"/> <User login="tabmon" password="xxxxxxxx"/> <Table name="countersamples"/> <!-- Generate indexes on service startup. --> <Indexes generate="true"> <Index column="timestamp" clustered="true"/> <Index column="machine" clustered="false"/> <Index column="instance" clustered="false"/> </Indexes> <!-- Automatically drop data rows older than the specified number of days. Set enabled="true" to turn this on. --> <PurgeOldData enabled="false" thresholdDays="30"/> </Database> </TabMonConfig>
computerNameについて
こちらを手っ取り早く確認するには、コマンドプロンプトでhostname
コマンドを実行するのが楽です。
>hostname EC2AMAZ-xxxxxx
※Tabmon.config
にペーストする際、小文字で入力することをオススメします(大文字の場合、Tabmonの監視結果が正常に出力されなかった)。
addressについて
今回、TabmonはTableau Serverと同じインスタンスにインストールしているのでlocalhost
を指定します。
Tabmonの実行
設定ファイルが整ったら、いざ実行します。…といっても、普通にWindowsメニューから実行するだけです。
これで、Tabmonが動き始めて、Tableau Serverの監視をスタートします。
結果の確認
Tabjoltもそうでしたが、Tabmonも一番大事なのはここです。監視した結果を確認するためには、下記のTableauワークブックを開きます。
\Program Files (x86)\TabMon\Resources\Sample Workbooks\2018.2+\Tabmon.twb
※Tabmonインストール直後、「2018.2+」のフォルダが無い場合があります。その時は下記からワークブックだけダウンロードしましょう。
- https://github.com/tableau/TabMon/files/2678117/TabMonWorkbook.zip
開いてみる
このワークブックは、Tabmonと同時にインストールされるPostgreSQLとTableau Serverリポジトリを参照します。Tabmon側のPostgreSQLのパスワードですが、もし忘れたというかたはTabmon.config
をよーく見ましょう(書いてます)。
CPUやメモリ、ディスクI/Oの情報を時系列で確認することができます。Tabjolt同様、このワークブックもそれなりに盛り沢山なので、詳細は別エントリで書いていきたいと思います。
おわりに
Tabmonをインストールすることで、Tableau Serverの利用状況とハードウェア側のリソースがどれだけ使用されているか監視することができます。日常的にこのツールでTableau Serverに目を光らせておくことで、Tableau Serverのスケーリングやサイジングを検討することができます。Tabjoltで負荷テストを行い、それをTabmonでチェックする…みたいな使い方もいいかもしれません。